/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.ngc;

import edu.ucue.ptc.gco.mdl.Lote;
import edu.ucue.ptc.gco.mdl.Producto;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import edu.ucue.ptc.gco.util.ElementoYaExisteException;
import edu.ucue.ptc.gco.util.InsuficienteStockException;
import java.util.List;
import javax.ejb.Local;

/**
 *
 * @author Marcelo
 */
@Local
public interface ProductoManagerLocal {
    public void crear(Producto producto, String usuario, String password) throws AtributoInvalidoException, ElementoYaExisteException, Exception;
    public void actualizar(Producto producto, String usuario, String password) throws AtributoInvalidoException, Exception;
    public void eliminar(Producto producto, String usuario, String password) throws Exception;
    public void eliminarPorId(int id, String usuario, String password) throws Exception;
    public List<Producto> listarTodos( String usuario, String password) throws Exception;
    
    public Producto obtenerPorId(int idProducto, String usuario, String password) throws Exception;
    public Long obtenerTotalStock(int idProducto, String usuario, String password) throws Exception;
    
    public void disminuirStock(int idProducto, int cantidad, String usuario, String password) throws AtributoInvalidoException, InsuficienteStockException, Exception;
    
    public String testProducto( String nombreProducto, String usuario, String password) throws AtributoInvalidoException;

    public List<Lote> lotesProducto(int cantidadRequerida, int idProducto, String usuario, String password) throws AtributoInvalidoException, InsuficienteStockException, Exception;

    public java.util.List<edu.ucue.ptc.gco.mdl.Producto> listarNombre(java.lang.String nombre);

    public void disminuirStock2(int idProducto, int cantidad, int idLote, java.lang.String usuario, java.lang.String password) throws edu.ucue.ptc.gco.util.AtributoInvalidoException, edu.ucue.ptc.gco.util.InsuficienteStockException, java.lang.Exception;
    
}
